/*************************************************
** 功能 : 素数判断
** 作者 : Qingke Zhang
/**************************************************/

#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

/*----------------------------------*
		函数定义
*-----------------------------------*/

//判断是否为素数
bool isPrimeNumber(int num)
{
	bool flag = true;

	//判断是否为素数
	for (int i = 2; i <= num - 1; i++)
	{
		if (num%i != 0) continue;
		else
		{
			flag = false;
			break;
		}

	}

	return flag;
}

//计算小于num的所有偶数的素数分解形式
int DecodeEvenToPrime(int num)
{
	//先判断是否为偶数，然后执行素数分解程序
	while (num >= 6)
	{
		//偶数的情况
		if (num % 2 == 0)
		{
			for (int i = 2; i <= num / 2; i++)
			{
				if (isPrimeNumber(i) && isPrimeNumber(num - i))
				{
					cout << "偶数" << num << "的素数分解结果: " << num << " = " << i << " + " << num - i << endl;
					//break;//如果是素数就停止后面的判断,直接判断下一个偶数
				}

			}
		}

		num = num - 1;

	}

	return 0;

}


/*----------------------------------*
		Main Function
*-----------------------------------*/

int main()
{
	int N;
	cout << "-------------------------------" << endl;
	cout << "请输入一个整数N (N>6): ";
	cin >> N;
	cout << "-------------------------------" << endl;

	//输出所有小于N的偶数的素数分解结果
	DecodeEvenToPrime(N);

	cout << "-------------------------------" << endl;
	cout << "输出完毕!" << endl << endl;


	system("pause");

	return 0;
}